Key switching is a feature included in most software samplers and sample players currently available on the market. It enables switching between different patches of audio samples by designating a limited amount of MIDI (Musical Instrument Digital Interface) keys on a music MIDI keyboard as key-switches. These keys become unplayable as musical notes. Instead, each key-switch generally represents a single sample patch and a note played after pressing a key-switch triggers the corresponding sample from the selected patch.
This prior art key-switching mechanism has several drawbacks. First, in order to support a large number of patches, a large number of key-switches is required. The larger the number of key-switches, the harder it is to locate the proper patch for a chosen articulation. Furthermore, the larger number of key-switches, the more they take over the MIDI keyboard and over-limit its playable range.
Second, in the prior art key-switching mechanism, the behavior of all key-switches is generally the same. Specifically, after choosing a patch by pressing a particular key-switch, all notes played thereafter trigger a note from the selected patch. Returning to the previous patch generally requires a separate pressing of a corresponding key-switch. This makes it very difficult, and sometimes nearly impossible, to switch back and forth between different patches quickly enough for performing music in real-time situations.
Third, it is often desirable to switch between patches in a way that will affect a note that has already been played. The existing key-switching mechanism makes no provisions for this.
One MIDI processing tool provided by the prior art allows the automatic switching to the proper patch in the sample player with a corresponding pre-recorded note transition (e.g. a legato note-transition) based on analysis of MIDI notes played by the user. In this regard, key-switch information is generated which is sent to the sample player and which remaps the MIDI note events to match the actual note-transition samples which are mapped all over the virtual MIDI keyboard (128 virtual keys) of the sample player, and by that, minimizing the amount of different key-switches that are required for that operation.
One drawback with this MIDI processing tool is the significant limitation in the number and types of articulations and playing techniques that may be switched to in real time. For example, the MIDI processing tool enables up to two interchangeable playing techniques switchable by using a modulation wheel controller (e.g. switching between legato and portamento). However, this MIDI processing tool does not allow switching between legato playing and other articulations and playing techniques such as, for example, non-legato playing patches (e.g. staccato, tremolo, and the like), in real time. If such switching is desired, multiple separate “instruments” are loaded for different sets of musical articulations of a single instrument, making the access to different playing techniques a matter of offline MIDI editing rather than a real-time intuitive process.
Another drawback with this MIDI processing tool is that it uses key-switches for patch selection which limits the number of different pre-recorded note-transitions that may be accessed by the tool. Since MIDI controllers, as well as MIDI notes, may have a value in the range 0-127, each patch in the sampler contains 128 virtual keys that may be mapped to pre-recorded samples. Key-switches use virtual keys in the sampler for the sake of patch selection, therefore leaving less virtual keys available for mapping regular notes. This poses a serious limitation on the number of key-switches that may be assigned for an instrument, and consequently, the number of different patches that may be accessed. Therefore, this MIDI controller generally supports intervals of up to one octave up and down from each note, and with no more than two note-transition styles accessible via the modulation wheel controller.
Accordingly, what is desired is a system and method that enables intuitive, real-time access to a large number of different patches of sound samples based on musical context and using smaller, more manageable amount of actual physical controlling keys, providing an easy and intuitive workflow for generating complex MIDI information for more realistic sounding MIDI music productions.
Repetition tools also exist in the prior art which provide different mechanisms for performing repetitions. According to a first mechanism, repeated notes are pre-recorded with a fixed number of repetitions and a fixed tempo. In order to adjust the pre-recorded repetition performance to a desired tempo, a user may play in a slightly faster tempo than the tempo in the original recording. When this happens, the repetition tool skips to a next repeated note in the recording as the user plays the next note earlier than the original time it was supposed to be played based on the original recording. The repetition tool also enables the user to define a different number of repetitions (smaller number), by defining which of the pre-recorded repeated notes will not be played (will be skipped). However, the number of repeated notes are determined in advance and may not be changed in real-time.
According to a second mechanism, repetitions are performed by pressing a MIDI trigger which behaves like a key-switch before releasing the note that is to be repeated, and repeatedly pressing the MIDI trigger every time before playing the next repeated note. As a consequence, the MIDI trigger must be pressed every single time before every repetition.
One drawback with the first mechanism of performing repetition is the lack of flexibility and the need to pre-program the tool to match different musical needs. One drawback with the second mechanism of performing repetition that in many cases, notes are to be repeated rapidly. Thus, pressing the MIDI trigger before every repetition is in most cases not feasible. The prior art addresses this problem by providing offline MIDI editing which, once again, compromises the real-time live performance. Accordingly, what is desired is an improved mechanism for performing repetitions which does not require pre-recording of the repetitions and does not requires a MIDI trigger to be pressed before each repetition.
The prior art uses the modulation wheel for creating crescendo/diminuendo effects by cross-fading different pre-recorded dynamic levels of a sampled instrument. However, the use of the modulation wheel introduces two deficiencies which are not solved by prior art systems. A first deficiency is that an initial dynamic level of a played sample is determined by velocity data attached to a “note-on” event from the MIDI keyboard, while the modulation wheel starts sending MIDI controller values when the wheel is first moved by the user. Since the value generated by the velocity is generally never the same as the first value generated by the modulation wheel, a common side-effect is an abrupt change of dynamics due to the difference between the velocity value and the value generated by the modulation wheel, which sounds unnatural and typically does not represent the musical intention of the user.
A second drawback is the effect of cross-fading, especially with solo instruments. Cross-fading between two different samples creates an audible overlapping between the dynamic layers, which means that at some point both layers may be heard at the same time. With samples of large sections, such as a symphonic string section, this kind of overlapping sound generally does not pose a problem. However, overlapping two samples of a solo instrument creates an unconvincing result, since during the cross-fading one hears two of the same instrument instead of one. This effect is caused both by the difference in timbre between the two samples, and because of phase synchronization issues. Accordingly, what is desired is a system and method for smooth dynamic transitions between different dynamic layers while at the same time allowing a user to fully control the initial dynamic level by velocity control.
The prior art also provides arpeggiators not only in consumer-level keyboard synthesizers, but also as step-time (offline editing) basic sequencer which enables playing simple MIDI patterns based on real-time input from a MIDI keyboard, by either choosing a base note, a chord or any combination of notes. What is desired is to enhance the standard arpeggiator functionality provided by standard arpeggiators with functionality that controls real-time switching between different MIDI patterns and variations.
While all of the above mentioned art relate to multi-sample libraries (collections of pre-recorded single note performances), pre-recorded audio performance loops also exist, but lack the flexibility of playing custom made melodies, rhythms, or harmonies. Pre-recorded audio performance loops instead use the pre-recorded performance of single or multiple instruments, in most cases, playing repetitive patterns. This mechanism is widely used for drum patterns (drum loops), brass pre-recorded phrases, and guitar loops. One of the advantages of using pre-recorded audio performance loops and phrases is the highly realistic sounding performance it provides since a real performance of a live musician is used in generating the loops.
Recently various tools have been created in order to adjust the tempo and pitch of those pre-recorded loops and phrases. However, manipulation of those patterns is still limited.
Another problem is the lack of consistency in timbre when interweaving between pre-recorded audio performance loops and phrases and playing more specific performance using multi-sample based instruments. This is because the different loops and phrases generally use different recording techniques and are often produced separately and by different companies. Prerecorded loops and phrases commit the user to performances of the entire melody lines, which does not allow users to change these and build their own melodies.
The prior art also provides software samplers that attempt to address the “machine-gun-effect” which is created by the repetition of the same sample several consecutive times by providing several alternate recorded versions of the same sample to be either randomly chosen or cycled in real-time. Thus, if the user repeats the same note several consecutive times, the software does not repeat the same sample several times, but cycles between different samples of that note, which helps improve realism. However, the mechanism used by currently available software samplers to cycle between the various available alternate samples generally requires two things. First, it generally requires a constant number of alternate recordings for each note in the program. This poses a problem when the usage of different number of alternates for different notes in the program is desired. In order to achieve a different number of alternates for different notes in the same program, a global cycle is provided which is as long as the lowest common multiple of the various numbers of alternates for the different notes, and each cycle that is smaller than the global size is duplicated the proper number of times based on the length of the global cycle. For example, if some notes have three alternates and others have four alternates, a global cycle of 12 alternates is created while the cycle of the notes with three alternates are duplicated four times and the cycle of the notes with four alternates are duplicated three times. When mixing less compatible numbers, such, as, for example, if adding a cycle of five alternates to the above example, a global cycle of 30 alternates is created. One of the main deficiencies of this solution is that the additional instances of samples (sample duplicates) and more complex structure of the program significantly increases the memory consumption and loading time when loading such a program onto the sample player. As a result, a less number of instruments may be loaded at the same time onto each computer.
A second requirement of the prior art mechanism to cycle between various available alternate samples is that each note played in the program of the instrument triggers a next step in the alternate-cycle. This creates a problem in cases where the user plays a repetitive musical phrase that includes the same amount of notes as the number of alternates in the cycle. In such a case, the same sample will always be triggered within that repetitive musical phrase. For example, if there is only one additional version of a note (two alternates), and the user plays a two-note trill, the “machine-gun-effect” will appear in spite of using alternates.
Accordingly, what is desired is a system and method for improved alternates cycling that addresses these issues.